#pragma once 
#include <QToolBar>
#include "StarlabPlugin.h"
class StarlabMainWindow;

/** 
 * @brief The interface of a plugin which adds GUI functionality to the system
 * @ingroup StarlabPluginInterfaces 
 * 
 * An example of this plugin is the one that fills the "file" menu and its Save/Load entries.
 * They are fudamentally used to modularize the structure of the system.
 */
class GuiPlugin : public StarlabPlugin{
public:
    /// Loads functionalities (menu entries and their logic) into the StarlabMainWindow
    virtual void load(StarlabMainWindow* window) = 0;
    /// If Gui elements need to be updated upon change (i.e. disabled, removed), then
    /// overlaod this method.
    virtual void update(){}
};

Q_DECLARE_INTERFACE(GuiPlugin, "starlab.GuiPlugin/1.0")
